# Contributor: Robert White <rjwhite2453@gmail.com>
# Contributor: Kevin Daudt <kdaudt@alpinelinux.org>
# Maintainer: Kevin Daudt <kdaudt@alpinelinux.org>
pkgname=fzf
pkgver=0.30.0
pkgrel=2
pkgdesc="A command-line fuzzy finder"
url="https://github.com/junegunn/fzf"
arch="all"
license="MIT"
makedepends="go bash"
options="net chmod-clean"
subpackages="
	$pkgname-tmux::noarch
	$pkgname-bash-plugin:_bash:noarch
	$pkgname-zsh-plugin:_zsh:noarch
	$pkgname-fish-plugin:_fish:noarch
	$pkgname-vim:vim:noarch
	$pkgname-neovim:nvim:noarch
	$pkgname-doc
	"
install="$pkgname.post-upgrade"
source="$pkgname-$pkgver.tar.gz::https://github.com/junegunn/fzf/archive/$pkgver.tar.gz
	find-buzybox-compat.patch
	do-not-require-bash-by-default.patch
	replace-perl-with-awk.patch
	$pkgname.plugin.sh
	$pkgname.plugin.zsh
	"

export GOPATH="$srcdir"

build() {
	go build
}

check() {
	# shellcheck disable=SC1007
	SHELL=/bin/sh GOOS= go test -v \
		github.com/junegunn/fzf/src \
		github.com/junegunn/fzf/src/algo \
		github.com/junegunn/fzf/src/tui \
		github.com/junegunn/fzf/src/util
}

package() {
	install -Dm0755 fzf "$pkgdir"/usr/bin/fzf

	install -D man/man1/fzf.1 "$pkgdir"/usr/share/man/man1/fzf.1
	install -D man/man1/fzf-tmux.1 "$pkgdir"/usr/share/man/man1/fzf-tmux.1
}

tmux() {
	depends="tmux bash"
	pkgdesc="Helper script to start fzf in a tmux pane"

	cd "$builddir"
	install -Dm0755 bin/fzf-tmux "$subpkgdir"/usr/bin/fzf-tmux
}

_bash() {
	pkgdesc="Bash plugin for $pkgname (completion and key bindings)"
	depends=""
	install_if="$pkgname=$pkgver-r$pkgrel bash"
	# For backward compatibility (Alpine <3.16).
	replaces="$pkgname-bash-completion<0.29.0-r4"

	cd "$builddir"

	install -D -m644 shell/*.bash "$srcdir"/$pkgname.plugin.sh \
		-t "$subpkgdir"/usr/share/bash/plugins/$pkgname/

	# For backward compatibility (Alpine <3.16).
	mkdir -p "$subpkgdir"/usr/share/fzf/
	ln -s ../bash/plugins/$pkgname/key-bindings.bash "$subpkgdir"/usr/share/fzf/
}

_zsh() {
	pkgdesc="Zsh plugin for $pkgname (completion and key bindings)"
	depends=""
	install_if="$pkgname=$pkgver-r$pkgrel zsh"
	# For backward compatibility (Alpine <3.16).
	replaces="$pkgname-zsh-completion<0.29.0-r4"

	cd "$builddir"

	install -D -m644 shell/*.zsh "$srcdir"/$pkgname.plugin.zsh \
		-t "$subpkgdir"/usr/share/zsh/plugins/$pkgname/

	# For backward compatibility (Alpine <3.16).
	mkdir -p "$subpkgdir"/usr/share/fzf/
	ln -s ../zsh/plugins/$pkgname/key-bindings.zsh "$subpkgdir"/usr/share/fzf/
}

_fish() {
	pkgdesc="Fish key bindings for $pkgname"
	depends=""
	install_if="$pkgname=$pkgver-r$pkgrel fish"
	# For backward compatibility (Alpine <3.16).
	replaces="$pkgname-fish-completion<0.29.0-r4"

	cd "$builddir"
	install -D -m644 shell/key-bindings.fish \
		"$subpkgdir"/usr/share/fish/vendor_functions.d/$pkgname-key-bindings.fish

	# For backward compatibility (Alpine <3.16).
	mkdir -p "$subpkgdir"/usr/share/fzf/
	ln -s ../fish/vendor_functions.d/$pkgname-key-bindings.fish "$subpkgdir"/usr/share/fzf/
}

vim() {
	pkgdesc="fzf vim plugin"
	install="$pkgname-vim.post-install"
	install_if="$pkgname=$pkgver-r$pkgrel vim"
	cd "$builddir"
	install -Dm0644 plugin/fzf.vim "$subpkgdir"/usr/share/vim/vimfiles/plugin/fzf.vim
	install -Dm0644 doc/fzf.txt "$subpkgdir"/usr/share/vim/vimfiles/doc/fzf.txt
}

nvim() {
	pkgdesc="fzf vim plugin for neovim"
	install_if="$pkgname=$pkgver-r$pkgrel neovim"
	cd "$builddir"
	install -Dm0644 plugin/fzf.vim "$subpkgdir"/usr/share/nvim/runtime/plugin/fzf.vim
	install -Dm0644 doc/fzf.txt "$subpkgdir"/usr/share/nvim/runtime/doc/fzf.txt
}

sha512sums="
cebb685a7fa00bdff07751d0021edde82f0ff3bf705eff82f94f6bf57c5e008eb6894d023ed7b14378f1d92fa2394192c12b720c6f711b1a414438fe3f8b4ec3  fzf-0.30.0.tar.gz
c59e7eb712f5072a2c66b79800f7674d1f9208b1ead4f654e57f8dcb673a45a751725a005c89759847f78c7ae7f246980b2c94e5fff5a3e8c2f6a364965e567e  find-buzybox-compat.patch
cdedfa6af278d243fb92e50d6a1929c2ac675beceef958cb2a464b3cc2c77a44883e96efd2c5a0606f3b840834bd38b53f98c9519e85b0d909f48bd872e378bc  do-not-require-bash-by-default.patch
3f202a30bd6fbb03f09e93510392ac768ffa89cca2d6c29ccdc8bf0769f6c7e86d95f60c94b7b41a116e4f12824b9c4ebff0713a72ef0d725652e0c752b77376  replace-perl-with-awk.patch
a13ba25c08fe5b54231508be8d2f0a9f4d342630e6c31f2524cc6b8b99cead5b80daa2e2e37a581198f9ce79df2b00fdf81acf84fe1ad8043ee96e4db0870ee6  fzf.plugin.sh
4ea4a5511704ef6fe57e7d3187739ba501ddb80d249738310d773edd9e2d08c26d27ec0c8976320e979aa8688984fe591b63a63b3c8589d5b80190e7d85d1c8b  fzf.plugin.zsh
"
